// 测试 链式调用
const Promise = require('../promise.js');

const promise = new Promise((resolve, reject) => {
  // setTimeout(()=>{
  resolve('异步成功');
  // },1000)
});
// // 链式调用，then 之后，都是返回一个新的promise ,这也保证了，状态的唯一性，用完就删掉了，我重新创建一个promise
// promise.then(res=>{
//     // console.log('res',res);
//     return res
// },(err)=>{
//     console.log('err', err)
// }).then((res)=>{
//     console.log('2-then 在第一个then 之后，将值返回，再第二个then 可以接收到',res);
// },(err)=>{
//     console.log('2-then',err);
// })

// 链式调用，then 之后，都是返回一个新的promise ,这也保证了，状态的唯一性，用完就删掉了，我重新创建一个promise
let p2 = promise.then(
  (res) => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve(
          new Promise((resolve, reject) => {
            setTimeout(() => {
              resolve(res);
            });
          })
        );
      });
    });
    // console.log('res',res);
    // return new Promise((resolve, reject) => {
    //   resolve(res);
    // });
    return p2;
  },
  (err) => {
    console.log('err', err);
  }
);

p2.then(
  (res) => {
    console.log(
      '2-then 在第一个then 之后，将值返回，再第二个then 可以接收到',
      res
    );
  },
  (err) => {
    console.log('2-then', err);
  }
);
// resolve() 之后 会自动返回？
// 取then 直接报错，哈哈
Object.defineProperty(p2, 'then', {
  get() {
    throw new Error('');
  },
});
